A virtual machine (VM) is an abstraction—a virtualization—of an actual physical computer system. The VM, also known as the “guest,” is installed on a host computer platform, which includes system hardware and one or more virtualization layers. Each VM is configured with its own operating system that runs on top of virtual system hardware as emulated by the virtualization layers. One of the emulated system hardware devices is a virtual disk. In typical implementations, the VM's virtual disk is encapsulated as a file or a set of files that are stored on a storage device accessible by the host. The storage device can be local to the host or, as is common in large-scale implementations, such as data centers, it can be a shared storage device accessed over a network, such as a storage area network (SAN) device or a network attached storage (NAS) device.
The size of a VM's virtual disk can be quite large, and in data centers, where many thousands or even millions of VMs may be provisioned, the costs associated with storing each “VM image” comprising a VM's virtual disk and other files of the VM, e.g., configuration files, can be very high. Although in recent years storage costs per gigabyte have decreased significantly, this has not translated to cost savings for the data centers, because the consumption of storage capacity has far outpaced the declining per gigabyte cost. Furthermore, the day-to-day cost of operating storage devices in data centers is significant because most of the storage capacity is provided by disk arrays which are known to be power-hungry devices.